import java.util.Map;
import java.util.TreeMap;

public class TreeMapDemo {
     //TreeMap的底层是一个红黑树，该映射根据其键的自然顺序进行排序
    // 或者根据创建映射时提供的Comparator进行排序，具体排序方式参照使用的构造方法
     public static void main(String[] args) {
         //使用空参的构造方法实例化一个TreeMap,其内部元素根据
         //键的自然顺序进行排序
         TreeMap<Integer,String> treeMap = new TreeMap<>();

         //向TreeMap中插入键值对
         treeMap.put(1,"宋江");
         treeMap.put(2,"卢俊义");
         treeMap.put(3,"吴用");

         //获取TreeMap中的键值对集合
         System.out.println("键值对集合："+treeMap.entrySet());

         //获取TreeMap中的键的集合
         System.out.println("键的集合："+treeMap.keySet());

         //获取TreeMap中的值的集合
         System.out.println("值的集合"+treeMap.values());

         //判断TreeMap中是否包含指定的key
         System.out.println(treeMap.containsKey(1));
         System.out.println(treeMap.containsKey(4));

         //判断TreeMap中是否包含指定的value
         System.out.println(treeMap.containsValue("宋江"));
         System.out.println(treeMap.containsValue("武松"));

         //删除键最小的键值对
         Map.Entry<Integer, String> polledFirstEntry = treeMap.pollFirstEntry();
         System.out.println(polledFirstEntry);
         System.out.println(treeMap.entrySet());

         //删除键最大的键值对
         Map.Entry<Integer, String> polledLastEntry = treeMap.pollLastEntry();
         System.out.println(polledLastEntry);
         System.out.println(treeMap.entrySet());

         //返回指定键所映射的值，如果不存在，返回null
         String s = treeMap.get(1);
         if(s != null) {
             System.out.println("查询结果是："+s);
         } else {
             System.out.println("treeSet中不包含这个映射！");
         }


         //获取TreeMap内所有键值对的个数
         System.out.println(treeMap.size());

         System.out.println(treeMap);

         //从TreeMap中删除指定key的键值对
         String remove = treeMap.remove(2);
         System.out.println(remove);

         System.out.println(treeMap);



     }
}
